<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>

    <script>

        /*
         // 作用域：
         // 域：空间、范围、区域……
         // 作用：读、写

         script		全局变量、全局函数
         自上而下

         函数
         由里到外

         {}

         浏览器：
         “JS解析器”
         1）“找一些东西”	：var  function 参数

         a = ...
         所有的变量，在正式运行代码之前，都提前赋了一个值：未定义
         fn1 = function fn1(){ alert(2); }
         所有的函数，在正式运行代码之前，都是整个函数块

         JS 的预解析

         遇到重名的：只留一个
         变量和函数重名了，就只留下函数

         2）逐行解读代码：
         表达式：= + - * / % ++ -- ! 参数……

         表达式可以修改预解析的值！



         //JS 的预解析
         a();//4
         alert(a);					// function a (){ alert(4); }
         var a = 1;
         alert(a);					// 1
         //function a (){ alert(2); }
         alert(a);					// 1
         var a = 3;
         alert(a);					// 3
         function a (){ alert(4); }
         alert(a);					// 3

         alert( typeof a );
         // a();	//a is not function报错								// 报错
         */



        /*
         var a = 1;
         function fn1(){
         alert(a);						// undefined
         var a = 2;
         }
         fn1();
         alert(a);							// 1

         var a = 1;
         function fn1(){
         alert(a);						// 1
         a = 2;
         }
         fn1();
         alert(a);							// 2
         */

        /*
         var a = 1;
         function fn1(a){
         alert(a);						// undefined
         a = 2;
         }
         fn1();
         alert(a);							// 1


         var a = 1;
         function fn1(a){
         alert(a);						// 1
         a = 2;
         }
         fn1(a);
         alert(a);							// 1
         */
    </script>

</head>

<body>
</body>
</html>
